Skills 是 Claude Code 的扩展机制,通过简单的 Markdown 文件向 Claude 添加自定义能力。本文档介绍 Skills 的核心特性、安装方法、编写规范,以及为什么 Skills 比 MCP 更适合编码工作流程的编排和知识封装。
Skills 通过 Markdown 文件定义工作流程和领域知识,无需编程基础,Git 提交即可团队共享,是 Prompt 工程的最佳载体。
Skills 是 Claude Code 的扩展机制,通过 SKILL.md 文件向 Claude 添加自定义能力。
核心特性:
| 特性 | 说明 |
|---|---|
| 自动发现 | Claude 根据描述判断何时使用 Skill |
| 手动调用 | 使用 /skill-name 直接触发 |
| 开放标准 | 遵循 Agent Skills 规范,跨工具通用 |
典型场景:
原有的 .claude/commands/ 已合并到 Skills 系统,旧文件继续有效。
Skill 存放位置决定其作用范围:
| 位置 | 路径 | 作用范围 |
|---|---|---|
| 个人 | ~/.claude/skills/<name>/SKILL.md | 所有项目 |
| 项目 | .claude/skills/<name>/SKILL.md | 当前项目 |
目录结构:
在子目录工作时,Claude 自动发现该目录下的 .claude/skills/,适用于 monorepo 项目。
SKILL.md 由两部分组成:YAML frontmatter 和 Markdown 内容。
Frontmatter 参数:
| 参数 | 说明 |
|---|---|
name | Skill 名称,成为 /name 命令 |
description | 用途描述,Claude 据此判断何时使用 |
disable-model-invocation | 设为 true 禁止自动调用,仅手动触发 |
user-invocable | 设为 false 从菜单隐藏,仅 Claude 内部使用 |
allowed-tools | 限制可用工具,如 Read, Grep, Glob |
context | 设为 fork 在独立子代理中运行 |
通过 frontmatter 参数可以精确控制 Skill 的触发方式、可用工具和执行环境,确保 Skill 按预期工作。
参数传递:
使用 $ARGUMENTS 或 $0、$1 获取调用参数:
调用 /fix-issue 123 时,$0 替换为 123。
通过 $0、$1、$2 等变量可以在 Skill 中引用调用参数,实现灵活的参数化 Skill。
创建 ~/.claude/skills/commit/SKILL.md:
disable-model-invocation: true 确保只能通过 /commit 手动触发,避免误触发。
验证安装:
在 Claude Code 中输入:
或询问 Claude:
社区提供了多个 Skills 市场,可直接安装现成的 Skill。
skills.sh 官方市场:
Vercel 推出的官方 CLI 工具和市场,支持多种 AI 代理工具。
浏览市场:https://skills.sh
支持的工具:Claude Code、Cursor、GitHub Copilot、Codex、Windsurf 等。
skills.sh 市场汇集了社区贡献的大量高质量 Skills,涵盖代码审查、测试生成、部署自动化等多个领域。
Anthropic 官方提供了 skill-creator Skill,让 Claude 帮你编写高质量的 Skills。
安装:
使用步骤:
告诉 Claude 你想创建什么 Skill:/skill-creator 我想创建一个代码审查的 Skill
Claude 会根据 skill-creator 的指导,生成符合规范的 SKILL.md 文件。
使用生成的 Skill 执行真实任务,观察效果。
根据使用中发现的问题,让 Claude 帮你修改和完善。
skill-creator 是 Skills 自举能力的体现,用 Skill 来创建 Skill,降低了编写门槛。
Skills 和 MCP 代表了两种不同的 AI 扩展哲学。MCP 专注于连接外部系统,而 Skills 专注于编码工作流程和领域知识。
对比分析:
| 维度 | Skills | MCP |
|---|---|---|
| 核心定位 | 任务流程编排 | 外部系统连接 |
| 实现方式 | Markdown 文件 | 服务器程序 |
| 技术门槛 | 几乎为零 | 需要开发能力 |
| 可移植性 | 跨平台通用 | 需适配不同客户端 |
| 维护成本 | 文本编辑即可 | 需要开发能力 |
MCP 最大的痛点是上下文占用。社区反馈显示,连接 4 个 MCP 服务器可能消耗 67,000 tokens,占据 50% 以上的上下文窗口。
MCP 服务器启动时会将所有工具定义注入上下文,无论是否使用这些工具,都会持续占用大量 Token。
MCP 上下文占用:
| MCP 服务器数量 | 预估 Token 消耗 |
|---|---|
| 1-2 个 | 10,000-20,000 |
| 3-5 个 | 30,000-50,000 |
| 5+ 个 | 50,000+ |
Skills 的优势:
消除重复上下文:MCP 每次调用都是无状态的,Claude 不会"记住"你的偏好。Skills 将工作流程固化为文件,无需每次对话都重复解释项目规范、编码风格、审查标准。
零基础设施依赖:MCP 需要运行服务器进程,涉及端口、认证、进程管理等运维问题。Skills 只是文件夹里的 Markdown,Git 提交即分发,团队成员自动同步。
Prompt 工程的最佳载体:Skills 本质是"prompt-based meta-tool",将专家经验编码为可复用的指令集。相比 MCP 的工具调用,Skills 更贴近 LLM 的原生工作方式。
开放标准的胜利:Anthropic 已将 Agent Skills 发布为开放标准,VS Code、Cursor、GitHub Copilot 等主流工具均已支持。这意味着你写的 Skill 可以在任何兼容的 AI 编辑器中使用。
基于开放标准的 Skills 可以在多个 AI 编辑器中使用,一次编写,多处运行,大大提升了投资回报率。
协作模式:
两者并非互斥,而是互补:
用 Skills 编排工作流,用 MCP 连接外部能力。Skills 是大脑,MCP 是双手。
Skills 包装 MCP:
以 Context7 文档查询为例,创建 ~/.claude/skills/context7/SKILL.md:
效果对比:
| 方式 | 上下文占用 | 调用方式 |
|---|---|---|
| MCP 直连 | ~15,000 tokens | 自动注入工具定义 |
| Skills + MCPorter | ~200 tokens | 按需执行 CLI 命令 |
通过 /context7 react hooks 调用时,Claude 只需执行 bash 命令获取结果,无需预加载 Context7 的完整工具定义,Token 消耗降低 98%。